"""
8.玩家与怪物
  （1）系统生成一个怪物（怪物的名称，血量，攻击值，防御值，攻击方法）
  （2）生成一个玩家（姓名，血量，攻击值，防御值，攻击方法）
  （3）系统角色和玩家的属性都由系统随机生成
       血量：2000-3500之间
       攻击：300-450之间
       防御：150-250之间
   （4）对战开始后玩家先手攻击，怪物掉血（玩家攻击值-怪物防御值）
   （5）怪物攻击，玩家掉血（怪物攻击值-玩家防御值）
   （6）任意一方血量为0则对战结束
"""
import random
import time


class Roles(object):
    def __init__(self, name, skills):
        """
        :param name: 名字
        :param skills: 技能列表 【平砍，平砍，三连斩】
        """
        self.name = name
        self.skills = skills
        self.blood = random.randint(2000, 3500)  # 自动生成血量

    def attack(self):
        """
        :return:  发动攻击，返回随机攻击值
        """
        attack_name = random.choice(self.skills)
        attack_power = random.randint(300, 450)
        print(f"{self.name} 使用了技能 {attack_name},攻击力 {attack_power}")
        return attack_power

    def defense(self, hurt):
        """
        :param hurt: 伤害值
        """
        defense = random.randint(150, 250)  # 防御值
        self.old_blood = self.blood
        self.blood = self.blood + defense - hurt
        print(f"{self.name} 受到了【 {self.old_blood - self.blood} 】真实 伤害,剩余血量 【{self.blood}】")


class Player(Roles):
    pass


class Monster(Roles):
    pass


class Game(object):
    def __init__(self,player,monster):
        self.player=player
        self.monster=monster
    def start(self):
        count=0
        while self.player.blood>0 and self.monster.blood>0:
            count+=1
            print(f"第 {count} 次对决".center(100,"*"))
            if self.player.blood>0:
                player_attack_value=self.player.attack()
                self.monster.defense(player_attack_value)
            else:
                break
            print("vs".center(10,"-"))
            if self.monster.blood>0:
                monster_attack_value = self.monster.attack()
                self.player.defense(monster_attack_value)
            else:
                break

            time.sleep(1) # 等待1秒，发动下一次攻击
        if   self.player.blood>0:
            print(f"{self.player.name} 获取了最后的胜利".center(100,"*"))
        else:
            print(f"{self.monster.name} 获取了最后的胜利".center(100,"*"))

if __name__ == '__main__':
    player=Player("唐三",["缠绕","寄生","蛛网束缚","蓝银囚笼"])
    monster=Monster("人面魔蜘",["蛛网","神经性剧毒","精神力刺伤"])
    g=Game(player,monster)
    g.start()